Black–Scholes model - Options premium calculatorBlack-Scholes Options Pricing Calculator in Pine Script Introduction
The Black-Scholes model is one of the most widely used mathematical models for pricing options. It provides a theoretical estimate of the price of European-style options based on factors such as the underlying asset price, strike price, time to expiration, volatility, risk-free rate, and option type.
This Pine Script implementation of the Black-Scholes options pricing model enables traders to calculate call and put option prices directly within TradingView, helping them assess potential trades more efficiently.
What Does This Script Do?
This script allows traders to input essential option parameters and instantly calculate both call and put option prices using the Black-Scholes formula. It provides:
• A user-friendly interface for inputting option parameters.
• Automatic computation of option prices.
• Real-time updates as market data changes.
Key Features:
• Uses the Black-Scholes formula to compute European call and put option prices.
• User-defined inputs for stock price, strike price, time to expiration, volatility, and risk-free rate.
• Displays calculated option prices on the TradingView chart.
Understanding the Black-Scholes Formula:
The Black-Scholes model is given by the following equations:
C=S0N(d1)−Xe−rtN(d2)C = S_0 N(d_1) - Xe^{-rt} N(d_2) P=Xe−rtN(−d2)−S0N(−d1)P = Xe^{-rt} N(-d_2) - S_0 N(-d_1)
Where:
• CC = Call option price
• PP = Put option price
• S0S_0 = Current stock price
• XX = Strike price
• rr = Risk-free interest rate
• tt = Time to expiration (in years)
• σ\sigma = Volatility of the stock (annualized)
• N(x)N(x) = Cumulative standard normal distribution
• d1d_1 and d2d_2 are given by:
d1=ln(S0/X)+(r+σ2/2)tσtd_1 = \frac{ \ln(S_0/X) + (r + \sigma^2/2)t }{ \sigma \sqrt{t} } d2=d1−σtd_2 = d_1 - \sigma \sqrt{t}
This script implements these calculations efficiently in Pine Script to help traders quickly determine fair values for options based on current market conditions.
Example Calculation:
(The following example values were true at the time of publishing this script. Option prices fluctuate constantly, so actual values may vary.)
• Underlying asset price (NIFTY): 23,519.35
• ATM Call Strike Price: 23,500
• ATM Put Strike Price: 23,550
• IV (Implied Volatility) for Call Option: 8.1%
• IV (Implied Volatility) for Put Option: 10.1%
• Expiry Date: April 3, 2025
Using the Black-Scholes model, the calculated theoretical prices are:
• Theoretical ATM CE price: ₹129
• Theoretical ATM PE price: ₹118
For comparison, the actual option prices from the option chain table at the time of writing were:
• Actual ATM CE price: ₹139.70
• Actual ATM PE price: ₹120.30
As we can see, there is a larger difference between the theoretical price and actual market price for the ATM Call option compared to the ATM Put option.
If you're an experienced trader, you likely know how to use this kind of information to identify potential market inefficiencies or trading opportunities.
How to Use This Script:
1. Add the script to your TradingView chart.
2. Input the necessary parameters such as stock price, strike price, volatility, risk-free rate, and time to expiration.
3. View the calculated call and put option prices directly on the chart.
This Black-Scholes options pricing calculator provides a convenient way to compute theoretical option prices within TradingView. It helps traders analyse whether an option is fairly priced based on market conditions.
While the Black-Scholes model has its limitations (e.g., it does not account for early exercise of American options or dividend payments), it remains a powerful tool for European-style options pricing and a foundational concept in financial markets.
A handy little tool! Unfortunately, this script requires manual data entry since automatic data capture is currently not possible. If this ever becomes feasible in the future, an updated version will be released.
Try it out and let me know your feedback!
Disclaimer:
Please note that this is only for study/educational purpose and is just one of the many tools a trader may use.
Use it at your own risk.
Regards!
Buscar en scripts para "the script"
Waves MultiTimeframe AlfredThe price on the charts moves quite chaotically, but when we look at a given interval (and eliminate the noise created on the lower interval), we can distinguish trend price movements up and down. They are almost never a straight line, but the price reaches higher and higher lows - we have up trend or lower and lower highs when we have a down trend.
There are many theories trying to describe trend movements, and many trend change detectors have been created on their basis.
In last centry we we had few famous researchers of investment theories, one of them was the Japanese journalist and investor Goichi Hosoda, creator of Ichimoku trading theory.
Goichi Hosoda proposed a trend change detector called Kyushu Legs. This detector compares the values of the current price with the price from 9 weeks ago and illustrates them using a candlestick chart. Than on the chart we can distinguishes B, P, Y formations that allow us to determine the trend and notify about trend change moment. This idea was developed further. The set of Kyushu Legs formations (B, P, Y) has been transferred to raw price chart and transformed into a set of rules detecting trend changes on the current price chart. A unique feature this method is the comparison of the parameters of neighboring candles in order to dynamically determine the values beyond which the trend changes. This eliminate the need of predefined threshold values and adjusting it to different price ranges.
Described trend detector is available on TradingView under the name "Waves" and was a starting point of a whole package of "Waves" scripts built around this detector.
"Waves MultiTimeframe Alfred" is part of the "Waves" package. It is an extension of trend detector with the ability to analyze in parallel candle data taken from higher intervals. Thanks to that this detector detects moments of trend changes on many intervals at once.
In top-right corner it displays a window with basic informations about trend (and potencial trend change moment) at higher intervals, such as:
- Trend direction confirmed on last closed candle
- In real time trend direction with the assumption that candle will be closes at current price level.
- Time to current candle close
- Price change done by the current candle
- Price's distance to the trend change threshold
Trend direction and potencial trend change are shown with a symbols:
↗ - Continuation of up trend
↘ - Continuation of down trend
↺ - Trend change to up trend
↷ - Trend change to down trend
This script supports 2 trend detection rulesets:
- Low - More sensitive trend detection ruleset, detects changes faster and more often than Medium, announcing potential changes in the Medium trend
- Medium - Less sensitive trend detection ruleset detecting trends on the chart.
Remember, until candle is not close price can move and trend indication can change. All trend indicators have a delay and are describing past till now. Future prediction cannot be done by software.
This script can be used alone, but the creator's intention was to use it together with other scripts from the "Waves" package. e.g. It can be used with the "Waves" script which draw trend lines and trend change moments on the current interval and we can use "Waves MultiTimeframe Alfred" as an assistant showing basic trends situation on up to 3 higher intervals.
Script settings:
Timeframe 1,2,3 - Option to pick 3 higher timeframes with text and background color settings.
Timer - Showing count down timer to the end of current bar on that interval
Candles - Showing candle symbol with current price change done on that interval. A separate candle color can be picked for price up and down candles.
Low wave row - Row with low trend symbol and price distance to the current low trend threshold (trend change price).
↗ - Continuation of up trend
↘ - Continuation of down trend
↺ - Trend change to up trend
↷ - Trend change to down trend
Low wave last bar symbol - Symbol of trend confirmed by previous bar. Drawn in the first line before interval symbol:
↗ - up trend
↘ - down trend
Mid wave row - Row with mid trend symbol and price distance to the current mid trend threshold (trend change price).
↗ - Continuation of up trend
↘ - Continuation of down trend
↺ - Trend change to up trend
↷ - Trend change to down trend
Mid wave last bar symbol - Symbol of trend confirmed by previous bar. Drawn in the first line after interval symbol:
↗ - up trend
↘ - down trend
Warnings - Showing explanation messages when interval data are not available.
Signal change - Experimental option to signal trend change with a different color.
Troubleshooting:
In case of any problems, please send error details to the author of the script.
dashboard MTF,EMA User Guide: Dashboard MTF EMA
Script Installation:
Copy the script code.
Go to the script window (Pine Editor) on TradingView.
Paste the code into the script window.
Save the script.
Adding the Script to the Chart:
Return to your chart on TradingView.
Look for the script in the list of available scripts.
Add the script to the chart.
Interpreting the Table:
On the right side of the chart, you will see a table labeled "EMA" with arrows.
The rows correspond to different timeframes: 5 minutes (5M), 15 minutes (15M), 1 hour (1H), 4 hours (4H), and 1 day (1D).
Understanding the Arrows:
Each row of the table has two columns: "EMA" and an arrow.
"EMA" indicates the trend of the Exponential Moving Average (EMA) for the specified period.
The arrow indicates the direction of the trend: ▲ for bullish, ▼ for bearish.
Table Colors:
The colors of the table reflect the current trend based on the comparison between fast and slow EMAs.
Blue (▲) indicates a bullish trend.
Red (▼) indicates a bearish trend.
Table Theme:
The table has a dark (Dark) or light (Light) theme according to your preference.
The background, frame, and colors are adjusted based on the selected theme.
Usage:
Use the table as a quick indicator of trends on different timeframes.
The arrows help you quickly identify trends without navigating between different time units.
Designed to simplify analysis and avoid cluttering the chart with multiple indicators.
Elliot wavesA script marking Elliot waves on a chart.
This script can be used by any user. There is no need to have a PRO or PREMIUM account.
Script with limited access, contact author to get authorization
According to Elliott, a market cycle consists of eight waves. 5 upward waves and 3 downward waves following them, which are their corrections. In up and down movements, the odd waves are in the direction of the movement, and the even waves are their corrections. Analyzing in more detail, each direction movement again consists of 5 waves, and each correction consists of 3 waves.
The symbols used are non-standard (result of platform limitations):
Trend moves ⠀⠀⠀⠀⠀|⠀⠀Correction moves
𝐈 𝐈𝐈 𝐈𝐈𝐈 𝐈𝐕 𝐕 ⠀⠀⠀⠀⠀ |⠀⠀⠀ 𝐚 𝐛 𝐜
𝟏 𝟐 𝟑 𝟒 𝟓 ⠀⠀⠀⠀⠀⠀⠀|⠀⠀⠀ 𝐀 𝐁 𝐂
I II III IV V ⠀⠀⠀⠀⠀⠀⠀|⠀⠀⠀ a b c
1 2 3 4 5 ⠀⠀⠀⠀⠀⠀⠀ |⠀⠀⠀ A B C
(I) (II) (III) (IV) (V) ⠀ |⠀⠀⠀(a) (b) (c)
(1) (2) (3) (4) (5)⠀⠀ |⠀⠀⠀(A) (B) (C)
➀ ➁ ➂ ➃ ➄ ⠀⠀⠀⠀⠀ |⠀⠀⠀Ⓐ Ⓑ Ⓒ
❶ ❷ ❸ ❹ ❺ ⠀⠀⠀⠀⠀ |⠀⠀⠀🅐 🅑 🅒
This script is a part of the "Elliot waves" toolkit and require initial calibration done with separate script: "Elliot waves calibrator". Elliot waves calibrator will generate a set of numbers that you need to copy to Calibration params in script settings. Proper instruction will be shown on the screen.
Script settings:
Calibration - Fields used for script calibration.
Levels - Param deciding how many levels of waves should be shown on the chart. 0 is showing only the main waves, with +1 increase adding one more level of details.
Vertex filter - Filter eliminating highs and lows that are not an extreme over area width equal to vertex filter value.
8 sets of trend configurations, where you can specify: visiblity, line color, line width
Labels configuration where you can specify: visiblity, text size and text color.
Troubleshooting:
In case of any problems, please send error details to the author of the script.
Premium Volatility Breakout Strategy [wbburgin]This the premium version of my Volatility Breakout strategy, which improves significantly on the original strategy (publicly available on my profile). Improvements are below. A note about any of my premium scripts: I will continue updating and improving the original (public) versions.
This strategy is not built for any specific asset or timeframe, and has been backtested on crypto, equities, and forex from 1min - 1day. However, I recommend using it on more volatile assets because it is a breakout strategy.
********** My Background
I am an investor, trader, and entrepreneur with 10 years of cryptocurrency and equity trading experience and founder of two fintech startups. I am a graduate of a prestigious university in the United States and carry broad and inclusive interests in mathematical finance, computer science, machine learning / artificial intelligence, as well as other fields.
**********
Improvements over the original Volatility Breakout strategy include:
Faster Trend Detection → The Premium Volatility Breakout strategy will catch trends faster by using adaptive volatility-weighted bands instead of standard-width volatility-weighted bands. This can improve win size and has performed well in my backtesting.
ADX Filter → False breakouts dampen the overall results of the original script, as well as the % profitable,so an ADX filter has been programmed into the script (toggle on/off in settings). This filter will only enter long and short trades when the ADX is above a certain threshold. This is by default toggled off because in most instances it will not be necessary, but in certain environments may be useful.
MA Configuration → Different types of moving averages and weights are now configurable in the settings. These can change the responsiveness of the strategy.
External Trend Filter → I use this strategy as a filter for some of my low-timeframe algorithms. I have added an external trend filter (a plot only displayed in the data window) that will return “1” when the trend is long and “-1” when the trend is short (displayed on-chart with red and green trend curves).
Customizable Alert Messages In-Strategy → In the settings, there will be text boxes where you can create your own alerts. All you will need to do is create an alert in the alert panel on TradingView and leave the message box blank - if you fill out the alert boxes in the settings, these will automatically populate into your alerts. There are in total four different customizable alerts messages: Entry and Exit alerts for both Long and Short sides. If you disable stop loss and/or take profit, these alerts will also be disabled. Similarly, if you disable shorts, all short alerts will be disabled.
About stop losses: This strategy does not come with a stop loss because the moving average acts as a stop loss / trade exit for both long and short entries.
**********
Display
You can turn off highlighting or barcolor in the settings. Additionally, future updates may include a color scheme for users using a light-themed window.
**********
Configuring Alerts
In TradingView desktop, go to the ‘Alerts’ tab on the right panel. Click the “+” button to create a new alert. Select this strategy for the condition and one of the two options that includes alert() function calls. Name the alert what you wish and clear the default message, because your text in the settings will replace this message.
Now that the alert is configured, you can go to the settings of the strategy and fill in your chosen text for the specific alert condition. You will need to check “Long and Short” in the “Trade Direction” setting in order for any Short Alerts to become active.
**********
Disclaimer
Copyright by wbburgin.
The information contained in my Scripts/Indicators/Algorithms does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
[@btc_charlie] Trader XO Macro Trend ScannerWhat is this script?
This script has two main functions focusing on EMAs (Exponential Moving Average) and Stochastic RSI.
EMAs
EMAs are typically used to give a view of bullish / bearish momentum. When the shorter EMA (calculated off more recent price action) crosses, or is above, the slower moving EMA (calculated off a longer period of price action), it suggests that the market is in an uptrend. This can be an indication to either go long on said asset, or that it is more preferable to take long setups over short setups. Invalidation on long setups is usually found via price action (e.g. previous lows) or simply waiting for an EMA cross in the opposite direction (i.e. shorter EMA crosses under longer term EMA).
This is not a perfect system for trade entry or exit, but it does give a good indication of market trends. The settings for the EMAs can be changed based on user inputs, and by default the candles are coloured based on the crosses to make it more visual. The default settings are based on “Trader XO’s” settings who is an exceptional swing trader.
RSI
Stochastic RSI is a separate indicator that has been added to this script. RSI measures Relative Strength (RSI = Relative Strength Index). When RSI is <20 it is considered oversold, and when >80 it is overbought. These conditions suggests that momentum is very strong in the direction of the trend.
If there is a divergence between the price (e.g. price is creating higher highs, and stoch RSI is creating lower highs) it suggests the strength of the trend is weakening. Whilst this script does not highlight divergences, what it does highlight is when the shorter term RSI (K) crosses over D (the average of last 3 periods). This can give an indication that the trend is losing strength.
Combination
The EMAs indicate when trend shifts (bullish or bearish).
The RSI indicates when the trend is losing momentum.
The combination of the two can be used to suggest when to prefer a directional bias, and subsequently shift in anticipation of a trend reversal.
Note that no signal is 100% accurate and an interpretation of market conditions and price action will need to be overlayed to
Why is it different to others?
I have not found other scripts that are available in this way visually including alerts when Stoch RSI crosses over/under the extremes; or the mid points.
Whilst these indicators are default, the combination of them and how they are presented is not and makes use of the TradingView colouring functionalities.
What are the features?
Customise the variables (averages) used in the script.
Display as one EMA or two EMAs (the crossing ones).
Alerts on EMA crosses.
Alerts on Stoch RSI crosses - slow/fast, upper, lower areas.
- Currently set on the chart to show alerts when Stoch RSI is above 80, then falls below 80 (and colours it red).
Customisable colours.
What are the best conditions for this?
It is designed for high timeframe charts and analysis in crypto, since crypto tends to trend.
It can however be used for lower timeframes.
Disclaimer/Notes:
I have noticed several videos appearing suggesting that this is a "100% win rate indicator" .
NO indicator has 100% win rate.
An indicator is an *indicator* that is all.
Please use responsibly and let me know if there are any mods or updates you would like to see.
Auto Harmonic Pattern - Backtester [Trendoscope]We are finally here with the implementation of backtesting tool for Auto-Harmonic-Pattern-UltimateX .
CAUTION: THIS IS NOT A STRATEGY AND SHOULD NOT BE FOLLOWED BLINDLY. WE ENCOURAGE USERS TO UTILISE THIS AS BACKTESTING TOOL FOR BUILDING THEIR STRATEGY BASED ON HARMONIC PATTERNS
This script is based on our premium indicator - Auto-Harmonic-Pattern-UltimateX . In this script, along with implementation of scanning harmonic patterns, we provide various options via settings which enables users to build their own strategy based on harmonic patterns, use them with custom coded filters, backtest them on various tickers and timeframes.
Harmonic Patterns is concept and we can trade harmonic pattern in many ways. While general interest around harmonic patterns is to find reversal zones and use them for short term swing trades. But, using it along trend following strategies can also be very rewarding. Here is one of the educational idea I shared about using harmonic patterns for trend following. These are just few possibilities where users can explore further on how they want to trade this. The settings of this script are crafted in such a way that it enables users to explore all these possibilities.
🎲 Components
Chart components of this script is lighter compared to Auto Harmonic Pattern - UltimateX. This is because we want to keep lighter interface in order to support seamless execution of emulator. Since pine strategy framework does most of the things such as calculating profitability, keeping track of trades and results etc, display with respect to - "Closed Trade Stats" are removed from this script and "Open Trade Stats" are made lighter.
🎲 Settings
🎯 Trade Settings : Few important settings under this section are
Due to pine limitations, we will not be able to support both long and short in a same setup. Hence, users need to chose either long or short trade setup.
Entry/Base/Target play important role in defining your strategy.
Confluence is another important factor which lets users use multiple patterns at once as confirmation.
🎯 Zigzag Settings : Zigzag settings determine the size of patterns being formed.
Please note that smaller patterns may not yield very good results and larger patterns may take time to complete trade. Similarly higher depth can cause runtime issues. Recursive zigzag option is alternative to deep search algorithm.
🎯 Filters :
Filters enable users to select trades based on specific conditions. Ability to use external filter even allows writing and using custom filters to be used with this algorithm. Here is a video which explains how this can be done. HOW-TO-Use-external-filters
Pattern filters allow users to pick and chose patterns they want to trade. This can be done either individually or based on category
🎯 Alerts :
Apart from strategy specific alerts, the script also implements customisable alerts via pine alert() function. Alerts can be configured to send upon three conditions
When new pattern is created
When an existing pattern updates entry/stop/target due to safe repaint of D (Only happens when Trail Entry Price is selected)
When a pattern in trade closes either due to hitting stop or target
Important Note: Alerts fired via this method may not match the trades shown on chart as trades which are controlled via pine strategy emulator depends on various other factors such as pyramiding.
Alert template is customisable and users can make use of available placeholders to get dynamic data in alerts. Valid placeholders are
{alertType} - Alert type - New/Update/Close
{id} - Pattern Id
{ticker} - Ticker
{timeframe} - Chart timeframe
{price} - Current price
{patterns} - Identified pattern names
{direction} - Direction - Long/Short
{entry} - Entry Price
{stop} - Stop Price
{target} - Target Price
{orderType} - Limit/Stop - applicable for only New and Update types
{status} - Trade status. Valid values are Pending/Cancelled/Stopped/Success
Template is common for all custom alert types. Hence, updating the template will impact all custom alerts - New/Update/Close
{
"alert" : "{alertType}",
"id" : {id},
"ticker" : "{ticker}",
"timeframe" : "{timeframe}",
"price" : {price},
"patterns" : "{patterns}",
"direction" : "{direction}",
"entry" : {entry},
"stop" : {stop},
"target" : {target},
"orderType" : {orderType}
"status" : {status}
}
Here is a video on how to customise the alerts using templates and placeholders - HOW-TO-Customize-Alerts-With-Placeholders
🎯 Miscellaneous :
These are simple settings to control display and backtest bars. If you are running alerts, we suggest turning of Open Trades and Drawings and limit backtest to minimal value in order to improve efficiency of
🎯 Backtest Engine Parameters :
Default settings are optimised for trend following. Users are encouraged to play around with settings and filters to build strategy out of this tool.
Position sizing is not leveraged. Margin settings makes sure that trades cannot exceed capital.
All measures are taken to avoid repainting. Script does not use request.security and real time bars. This drastically reduces the risk of repainting in scripts.
If you are premium user, please select "Bar Magnifier".
Strategy BackTest Display Statistics - TraderHalaiThis script was born out of my quest to be able to display strategy back test statistics on charts to allow for easier backtesting on devices that do not natively support backtest engine (such as mobile phones, when I am backtesting from away from my computer). There are already a few good ones on TradingView, but most / many are too complicated for my needs.
Found an excellent display backtest engine by 'The Art of Trading'. This script is a snippet of his hard work, with some very minor tweaks and changes. Much respect to the original author.
Full credit to the original author of this script. It can be found here: www.tradingview.com
I decided to modify the script by simplifying it down and make it easier to integrate into existing strategies, using simple copy and paste, by relying on existing tradingview strategy backtester inputs. I have also added 3 additional performance metrics:
- Max Run Up
- Average Win per trade
- Average Loss per trade
As this is a work in progress, I will look to add in more performance metrics in future, as I further develop this script.
Feel free to use this display panel in your scripts and strategies.
Thanks and enjoy :)
Dynamic Fib StrategyAfter publishing many complex scripts with a myriad of inputs that were confusing for the average user, and after being told my previous publications were overfitted and not easily applied across the board...I spent the past three months working on this masterpiece.
The script is very simple to use, and it MUST be used for timeframes of 10 minutes or more. Please do not use this strategy for lower timeframes thinking that more trades is a desireable trait in a strategy. Patience is a virtue, and it doesn't matter if there are 1000 bars between trades (I am exaggerating here) all crypto is cyclical in a short timeframe of days.
The script is based on moving averages, what is different about this script is that it is the result of months of analysis of the crosses that are key indicators of the best times to trade. It also identifies crosses that indicate when a massive dump is coming and when the dump turns back into a pump. It is designed to be a long strategy with the careful identification of the dump indicators so it preserves your capital and results in a better trade approach.
At the heart of this script is the Sutte MA and the SMA, and only a subset of the settings for these are exposed for user input to keep things simple.
The second key piece of how this script works is the Fibonnaci levels. For the purposes of using this script, the first two levels (Fib 1 and Fib 2) are only for display purposes of the bands and does not affect the triggers for trading. It is only the third and fourth levels which impact the trade triggerers for buying and selling. The idea here is that the best times to execute a trade is when the price moves into the outer bands as these are typical triggers for selloffs from those suffering from FOMO.
Since I have done quite a bit of work here, I do not wish for this script to be copied and pasted into other scripts. It is my coup de grace and there is not a script like this anywhere on TradingView that delves deep into the crosses that matter.
logLibrary "log"
Logging library for easily displaying debug, info, warn, error and critical messages.
No real need to explain why you might want to use this library! I'm sure you've all experienced the frustration of trying to understand the data state of your scripts... so, enjoy! More on it's way...
(Don't forget to check the helpers in the script and the useful tips below)
Some Useful Tips
By default the log console persists between bars (for history) and bars and ticks (for realtime).
Sometimes it is useful to clear the log after each candle or tick (assuming we are using the above helpers):
```
log_print(clear = true) // starts afresh on every bar and tick (excludes historical bars but good realtime tick analysis)
log_print(clear = barstate.isnew) // clears the log at the start of each bar (again, excludes historical but good realtime candle analysis)
```
It is also useful to be able to selectively understand the state of data at specific points or times within a script:
```
if log.once()
debug('useful variable', my_var) // this log only gets written once, upon first execution of this statement
if log.only(5)
debug3(a, b, c) // these variables are only logged the first five times this statement is executed
log_print(clear = false) // clear must be false and you should not write other logs on every bar, or the above will be lost
```
Final tip. If you want to view ONLY log entries of a particular level, then negate the constant:
```
log_print(level = -LOG_DEBUG)
```
Detailed Interface
once() Restrict execution to only happen once. Usage: if assert.once()\n happens_once()
Returns: bool, true on first execution within scope, false subsequently
only(repeat) Restrict execution to happen a set number of times. Usage: if assert.only(5)\n happens_five_times()
Parameters:
repeat : int, the number of times to return true
Returns: bool, true for the set number of times within scope, false subsequently
init() Initialises the log array
Returns: string , tuple based array to contain all pending log entries (__LOG)
clear(msgs) Clears the log array
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
trace(msgs, msg) Writes a trace message to the log console
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
msg : string, the trace message to write to the log
debug(msgs, msg) Writes a debug message to the log console
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
msg : string, the debug message to write to the log
info(msgs, msg) Writes an info message to the log console
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
msg : string, the info message to write to the log
warn(msgs, msg) Writes a warning message to the log console
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
msg : string, the warn message to write to the log
error(msgs, msg) Writes an error message to the log console
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
msg : string, the error message to write to the log
fatal(msgs, msg) Writes a critical message to the log console
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
msg : string, the fatal message to write to the log
log(msgs, level, msg) Write a log message to the log console with a custom level
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
level : ing, the logging level to assign to the message
msg : string, the log message to write to the log
severity(msgs) Checks the unprocessed log messages and returns the highest present level
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
Returns: int, the highest level found within the unfiltered logs
print(msgs, level, clear, rows, text_size, position) Prints all log messages to the screen
Parameters:
msgs : string , the current collection of unfiltered and unprocessed logs (__LOG)
level : int, the minimum required log level of each message to be displayed
clear : bool, clear the printed log console after each render (useful with realtime when set to barstate.isconfirmed)
rows : int, the number of rows to display in the log console
text_size : string, the text size of the log console (global size vars)
position : string, the position of the log console (global position vars)
unittest_log(case) Log module unit tests, for inclusion in parent script test suite. Usage: log.unittest_log(__ASSERTS)
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
unittest(verbose) Run the log module unit tests as a stand alone. Usage: log.unittest()
Parameters:
verbose : bool, optionally disable the full report to only display failures
assertLibrary "assert"
Production ready assertions and auto-reporting for unit testing pine scripts.
This library was born from the need to maintain production level stability and catch regressions / bugs early and fast. I hope this help you trust your pine scripts too. More libraries and tools on their way... please follow for more.
Please see the script for helpers to copy into your own scripts as well as examples at the bottom of the library unit testing itself.
Quick Reference
```
case = assert.init()
new_case(case, 'Asserts for floats and ints')
assert.equal(a, b, case, 'a == b')
assert.not_equal(a, b, case, 'a != b')
assert.nan(a, case, 'a == na')
assert.not_nan(a, case, 'a != na')
assert.is_in(a, b, case, 'a in b ')
assert.is_not_in(a, b, case, 'a not in b ')
assert.array_equal(a, b, case, 'a == b ')
new_case(case, 'Asserts for ints only')
assert.int_in(a, b, case, 'a in b ')
assert.int_not_in(a, b, case, 'a not in b ')
assert.int_array_equal(a, b, case, 'a == b ')
new_case(case, 'Asserts for bools only')
assert.is_true(a, case, 'a == true')
assert.is_false(a, case, 'a == false')
assert.bool_equal(a, b, case, 'a == b')
assert.bool_not_equal(a, b, case, 'a != b')
assert.bool_nan(a, case, 'a == na')
assert.bool_not_nan(a, case, 'a != na')
assert.bool_array_equal(a, b, case, 'a == b ')
new_case(case, 'Asserts for strings only')
assert.str_equal(a, b, case, 'a == b')
assert.str_not_equal(a, b, case, 'a != b')
assert.str_nan(a, case, 'a == na')
assert.str_not_nan(a, case, 'a != na')
assert.str_in(a, b, case, 'a in b ')
assert.str_not_in(a, b, case, 'a not in b ')
assert.str_array_equal(a, b, case, 'a == b ')
assert.report(case)
```
Detailed Interface
once() Restrict execution to only happen once. Usage: if assert.once()\n happens_once()
Returns: bool, true on first execution within scope, false subsequently
init() Initialises the asserts array
Returns: string , tuple based array containing all unit test results and current case details (__ASSERTS)
equal(a, b, case, name) Numeric assert equal. Usage: assert.equal(1, 1, case, 'one == one')
Parameters:
a : float, numeric value "a" to compare equal to "b"
b : float, numeric value "b" to compare equal to "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
not_equal(a, b, case, name) Numeric assert not equal. Usage: assert.not_equal(1, 2, case, 'one != two')
Parameters:
a : float, numeric value "a" to compare not equal "b"
b : float, numeric value "b" to compare not equal "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
nan(a, case, name) Numeric assert is NaN. Usage: assert.nan(float(na), case, 'number is NaN')
Parameters:
a : float, numeric value "a" to check is NaN
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
not_nan(a, case, name) Numeric assert is not NaN. Usage: assert.not_nan(1, case, 'number is not NaN')
Parameters:
a : float, numeric value "a" to check is not NaN
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
is_in(a, b, case, name) Numeric assert value in float array. Usage: assert.is_in(1, array.from(1.0), case, '1 is in ')
Parameters:
a : float, numeric value "a" to check is in array "b"
b : float , array "b" to check contains "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
is_not_in(a, b, case, name) Numeric assert value not in float array. Usage: assert.is_not_in(2, array.from(1.0), case, '2 is not in ')
Parameters:
a : float, numeric value "a" to check is not in array "b"
b : float , array "b" to check does not contain "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
array_equal(a, b, case, name) Float assert arrays are equal. Usage: assert.array_equal(array.from(1.0), array.from(1.0), case, ' == ')
Parameters:
a : float , array "a" to check is identical to array "b"
b : float , array "b" to check is identical to array "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
int_in(a, b, case, name) Integer assert value in integer array. Usage: assert.int_in(1, array.from(1), case, '1 is in ')
Parameters:
a : int, value "a" to check is in array "b"
b : int , array "b" to check contains "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
int_not_in(a, b, case, name) Integer assert value not in integer array. Usage: assert.int_not_in(2, array.from(1), case, '2 is not in ')
Parameters:
a : int, value "a" to check is not in array "b"
b : int , array "b" to check does not contain "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
int_array_equal(a, b, case, name) Integer assert arrays are equal. Usage: assert.int_array_equal(array.from(1), array.from(1), case, ' == ')
Parameters:
a : int , array "a" to check is identical to array "b"
b : int , array "b" to check is identical to array "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
is_true(a, case, name) Boolean assert is true. Usage: assert.is_true(true, case, 'is true')
Parameters:
a : bool, value "a" to check is true
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
is_false(a, case, name) Boolean assert is false. Usage: assert.is_false(false, case, 'is false')
Parameters:
a : bool, value "a" to check is false
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
bool_equal(a, b, case, name) Boolean assert equal. Usage: assert.bool_equal(true, true, case, 'true == true')
Parameters:
a : bool, value "a" to compare equal to "b"
b : bool, value "b" to compare equal to "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
bool_not_equal(a, b, case, name) Boolean assert not equal. Usage: assert.bool_not_equal(true, false, case, 'true != false')
Parameters:
a : bool, value "a" to compare not equal "b"
b : bool, value "b" to compare not equal "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
bool_nan(a, case, name) Boolean assert is NaN. Usage: assert.bool_nan(bool(na), case, 'bool is NaN')
Parameters:
a : bool, value "a" to check is NaN
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
bool_not_nan(a, case, name) Boolean assert is not NaN. Usage: assert.bool_not_nan(true, case, 'bool is not NaN')
Parameters:
a : bool, value "a" to check is not NaN
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
bool_array_equal(a, b, case, name) Boolean assert arrays are equal. Usage: assert.bool_array_equal(array.from(true), array.from(true), case, ' == ')
Parameters:
a : bool , array "a" to check is identical to array "b"
b : bool , array "b" to check is identical to array "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
str_equal(a, b, case, name) String assert equal. Usage: assert.str_equal('hi', 'hi', case, '"hi" == "hi"')
Parameters:
a : string, value "a" to compare equal to "b"
b : string, value "b" to compare equal to "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
str_not_equal(a, b, case, name) String assert not equal. Usage: assert.str_not_equal('hi', 'bye', case, '"hi" != "bye"')
Parameters:
a : string, value "a" to compare not equal "b"
b : string, value "b" to compare not equal "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
str_nan(a, case, name) String assert is NaN. Usage: assert.str_nan(string(na), case, 'string is NaN')
Parameters:
a : string, value "a" to check is NaN
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
str_not_nan(a, case, name) String assert is not NaN. Usage: assert.str_not_nan('hi', case', 'string is not NaN')
Parameters:
a : string, value "a" to check is not NaN
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
str_in(a, b, case, name) String assert value in string array. Usage: assert.str_in('hi', array.from('hi'), case, '"hi" in ')
Parameters:
a : string, value "a" to check is in array "b"
b : string , array "b" to check contains "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
str_not_in(a, b, case, name) String assert value not in string array. Usage: assert.str_in('hi', array.from('bye'), case, '"hi" in ')
Parameters:
a : string, value "a" to check is not in array "b"
b : string , array "b" to check does not contain "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
str_array_equal(a, b, case, name) String assert arrays are equal. Usage: assert.str_array_equal(array.from('hi'), array.from('hi'), case, ' == ')
Parameters:
a : string , array "a" to check is identical to array "b"
b : string , array "b" to check is identical to array "a"
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the current unit test name, if undefined the test index of the current case is used
Returns: bool, true if the assertion passes, false otherwise
new_case(case, name) Assign a new test case name, for the next set of unit tests. Usage: assert.new_case(case, 'My tests')
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
name : string, the case name for the next suite of tests
clear(case) Clear all stored unit tests from all cases. Usage: assert.clear(case)
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
revert(case) Revert the previous unit test. Usage: = assert.revert(case)
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
Returns: , tuple containing the msg and result of the reverted test
passed(case, revert) Check if the last unit test has passed. Usage: bool success = assert.passed(case)
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
revert : bool, optionally revert the test
Returns: bool, true only if the test passed
failed(case, revert) Check if the last unit test has failed. Usage: bool failure = assert.failed(case)
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
revert : bool, optionally revert the test
Returns: bool, true only if the test failed
report(case, verbose) Report the outcome of unit tests that fail. Usage: bool passed = assert.report(case)
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
verbose : bool, optionally display full report that includes the outcome of all tests
Returns: bool, true only if all tests passed
unittest_assert(case) Assert module unit tests, for inclusion in parent script test suite. Usage: assert.unittest_assert(__ASSERTS)
Parameters:
case : string , the current test case and array of previous unit tests (__ASSERTS)
unittest(verbose) Run the assert module unit tests as a stand alone. Usage: assert.unittest()
Parameters:
verbose : bool, optionally toggle report to display the outcome of all unit tests
PriceCatch Breakout Signals IOHi TradingView Community.
Here is a script that identifies and marks two different breakout levels on the chart. It works on all instruments - equities, forex, crypto & commodities.
Probable Breakout Buy Level
Stop-Reverse Buy Level
The above chart is self-explanatory. The script uses two different formulas to look out for breakouts. This logic opens up more opportunities.
As the levels are marked in advance before the breakouts occur, it will give traders ample time to study further and plan the trade.
PLAYING SAFE
After taking the trade, to play safe, I follow this method that once the Low of the price goes above the Breakout Level, I usually shift the stop loss to buy price to protect against any sudden reversal. For me protecting capital is important. As usual with price action, longer time-frames produce more reliable signals.
STOP LOSS
While the initial stop level is suggested, traders may also use the ATR to set stop loss. Users may find my free script 'ATR value on Chart' useful.
NOTE - PRIOR TO USING THIS SCRIPT:
You may use this script in addition to your other indicators or independently. Please remember that the script is shared with absolutely no assurances and warranties whatsoever regarding usability and as a responsible trader, please satisfy yourselves thoroughly and use it only if you are convinced it works for you. Remember, you are 100% responsible for your actions. If you understand and accept that, you may use the script. The script does not identify any short signals.
QUERIES/FEEDBACK
Please PM me.
Regards to all and wish everyone all the best with trading.
The Moon█ OVERVIEW
The Moon is a script that is designed to help Traders analyse their charts using the moon. This script consists of three main features :
1. Moon Phases Pro : This is a more powerful version of the default built-in Moon Phases where it would plot both past cycles and Future cycles with a better accuracy.
2. Moon Lines : This plots the moon's longitude into price. you can also select your desired $/degree ( price vs time unit) to make these lines better suited for your chart and the asset your playing with. We also didn't forget to add an option to enable harmonics of these lines. In addition, you can select "reverse" to get the downtrending plants as well.
3. Moon Angles : This allows you to highlight areas where the moon is at X degree. you can get the Moon at zero aris or 180 degrees or any other degree!.
We also added some styling options to help with the visuals.
█ Future Plans and upgrades to this script may include :
1. Enhanced algorithm for a faster loading/processing script.
2. More future dates plotting.
And more! Feel free to contact me with any feature that you would like to see in this script
█ How to use :
1. Open the settings.
2. Enable your desired tool and adjust the settings.
Give the script a few seconds and you should be set. Don't enable more than 2 tools at the same time, but if you want to do that, you can insert the same script twice or more in your chart.
This script is coded as an addon to the Gann ToolBox package/scripts.
Planetary Aspects & Transits█ OVERVIEW
Planetary Aspects and Transits are commonly used by Astrology Traders and Gann Traders for various reasons. This script is designed to highlight these planetary aspects and transitions on your chart. You can select your favorite planet -including the sun and the moon- and also select the aspect that you would like to view and this script will highlight it on the chart. The aspects that are included to choose from are ( 0, 30, 45, 60, 72, 90, 120, 135, 144, 150, and 180 degrees ). You can also select the mode of these aspects and transits ( Heliocentric vs Geocentric ).
This script offers two running options :
1. Planet vs aspect : using this option you will be able to select a planet and an aspect and we will find/highlight all the transitions vs all the planets in that aspect.
2. Planet vs Planet : using this option you will be able to select two planet and a single aspect to view on the chart.
█ Future Plans and upgrades to this script may include :
1. Enhanced algorithm for a faster loading/processing script.
2. More future dates plotting.
And more! Feel free to contact me with any feature that you would like to see in this script
█ How to use :
1. Open the settings.
2. Choose the planet/planets, and the aspect.
3. Enable the option.
Give the script a few seconds and you should be set.
This script is coded as an addon to the Gann ToolBox package/scripts.
Barholle eMA and RSI Movement TestThis is a test that offers insight into whether and asset is heading into bullish or bearish territory.
This indicator/test offers insight into the Exponential Moving Average's velocity and acceleration as well as the Stochastic RSI's velocity, acceleration and jerk. Included is a 'Stochastic Difference' and 'Stochastic Growth' indicators (commented out) that measure the difference between K and D in the Stoch RSI as well as the rate of it's change. This test is all about crossovers - the best leading indicator is a downward cross of the eMA velocity over the eMA acceleration, indicating a drop in price in the current or next bar.
The lines or importance have been set to -2 and 5, but these should be adjusted to suit your preferences. These numbers were chosen in order to try and create some kind of threshold after which action might be suggested. Backtesting is highly recommended so you can see how the test does and does not work. It is super powerful, but it is not omniscient - its an RSI and eMA derivative, past success does not necessarily dictate future success.
Please look at the code for several more plots you can use of derivatives and other ideas explore but commented out for greater legibility of the graph. Commenting and commenting (or uncommenting all and just disabling some in the settings) and comparing the graphs and crossovers is a useful exercise. To that end, one last concept - the MARSI - a combined moving averages and RSI measurement - was abandoned because it didn't appear to indicate anything of use, however you may find crossovers or patterns with it comparing it to other graphs, so it was left in but commented.
Please take a look at the comments and all the math and indicators 'left on the cutting room floor' in the script. Maybe you'll find a gem in the redux version of this script.
Outreach regarding the script, patterns noticed and full-on stealing of the script are all permitted. Many elements of this script were nabbed from other scripts - thank you to a community of coders who put it all out there.
Gann Planetary Lines█ OVERVIEW
Gann Planetary Lines is one of the most powerful Gann Tools that converts planetary longitude angles into price. This script can be used in many different ways, methods, and trading systems.
This Script allows you to Plot Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, and Pluto. While also allowing you to select the planetary line mode "Heliocentric" or "Geocentric"
One more important feature about this script. It also allows you to plot in the harmonics of these planetary lines : "Wheel of 24" ,"Semi-Sextile", "Semi-Square", "Sextile", "Quintile", "Square", "Trine", and "Opposition "
And of course you will be able to select the color of each one of the planets when it comes to styling.
One more important thing to mention, Yes you will be able to select the $/° value so you can square these lines perfectly in your chart!
█ Future Plans and upgrades to this script may include :
1. Further lines into the futures.
2. An option to Enable and Disable the 0° vertical line when the planet transition from 360° to 0°
3. Labels around the planetary lines to distinguish between them not only by color by text as well.
And more! Feel free to contact me with any feature that you would like to see in this script
█ How to use :
First of all, select the appropriate $/° value.
Then select the planet you would like to use from the list in the script's option.
Select the mode of the planet, "Heliocentric" or "Geocentric"
Make sure to enable the planet by clicking on the check mark.
Then you will be able to see these planets on your chart.
Additionally, I have included an option to add the harmonics to your planetary lines!
Simply select the harmonics that you would like to have and give it 10 seconds and it should be in your chart.
This script is coded as an addon to the Gann ToolBox package/scripts.
EMA TrendThe purpose of this script is to identify price trends based on EMAs. The relative position of price to specific EMAs and the position of certain EMAs towards each other are used to determine the trend direction. The script is intended for investors as a tool to define a basis for further evaluation. I do not use the script as a signal generator and would not recommend doing so without the help of additional indicators.
How to work with the script
The major (or long term) trend direction is determined by the 144 EMA much in the same way as the 200 MA is used in other systems. If the price is above the 144 EMA we are in a long term uptrend, below we are in a long term downtrend. This is to be taken with a grain of salt though. The 144 EMA is considerably shorter than the 200 SMA and is more prone to the price fluctuating around it during periods without a strong long term trend. I recommend using this as a confirmation for the short term trend.
The short term trend is derived from the position and slope of the price, the 21 EMA and the 55 EMA. If the price is above the 21 EMA, the 21 above the 55 EMA, both EMAs are sloping upwards and the distance between the two is increasing, we are talking about an uptrend (and vice versa for a downtrend). This is visualized by the color of the fill between the 144 EMA and close price. Green for uptrend, red for downtrend and no color for an undetermined trend.
The EMAs used are: 21 , 34 , 55 , 89 , 144 , 233 . Most of the EMAs are at 50 transparency to appear less dominant. For orientation, the 144 EMA is bright green to indicate its general importance for the trend determination, and the 55 EMAs is not transparent mainly to be able to identify positioning when the EMAs are close together.
Base time frame EMA
The 144 EMA is plotted twice where one is fixed to the daily time frame (can be configured) to be able to have the 144 on different timeframes during analysis. I find this very useful to keep the focus on my main time frame while analyzing trend on lower or higher time frames. This can also be turned off.
Configurability
This script is less configurable than I generally like with my other scripts. The reason is that the title attribute of the plots is not dynamic, and I use the data window often to get exact values from the script to determine buy targets for pullbacks and other things. Hence, I prefer not to have random names (or no names) in there to save mental capacity. If this ever becomes available, I'll gladly add this to this script. Till then, I encourage you to take the script and adjust it to your own needs. It should be simple enough even if you are just starting out in pine.
Waindrops [Makit0]█ OVERALL
Plot waindrops (custom volume profiles) on user defined periods, for each period you get high and low, it slices each period in half to get independent vwap, volume profile and the volume traded per price at each half.
It works on intraday charts only, up to 720m (12H). It can plot balanced or unbalanced waindrops, and volume profiles up to 24H sessions.
As example you can setup unbalanced periods to get independent volume profiles for the overnight and cash sessions on the futures market, or 24H periods to get the full session volume profile of EURUSD
The purpose of this indicator is twofold:
1 — from a Chartist point of view, to have an indicator which displays the volume in a more readable way
2 — from a Pine Coder point of view, to have an example of use for two very powerful tools on Pine Script:
• the recently updated drawing limit to 500 (from 50)
• the recently ability to use drawings arrays (lines and labels)
If you are new to Pine Script and you are learning how to code, I hope you read all the code and comments on this indicator, all is designed for you,
the variables and functions names, the sometimes too big explanations, the overall structure of the code, all is intended as an example on how to code
in Pine Script a specific indicator from a very good specification in form of white paper
If you wanna learn Pine Script form scratch just start HERE
In case you have any kind of problem with Pine Script please use some of the awesome resources at our disposal: USRMAN , REFMAN , AWESOMENESS , MAGIC
█ FEATURES
Waindrops are a different way of seeing the volume and price plotted in a chart, its a volume profile indicator where you can see the volume of each price level
plotted as a vertical histogram for each half of a custom period. By default the period is 60 so it plots an independent volume profile each 30m
You can think of each waindrop as an user defined candlestick or bar with four key values:
• high of the period
• low of the period
• left vwap (volume weighted average price of the first half period)
• right vwap (volume weighted average price of the second half period)
The waindrop can have 3 different colors (configurable by the user):
• GREEN: when the right vwap is higher than the left vwap (bullish sentiment )
• RED: when the right vwap is lower than the left vwap (bearish sentiment )
• BLUE: when the right vwap is equal than the left vwap ( neutral sentiment )
KEY FEATURES
• Help menu
• Custom periods
• Central bars
• Left/Right VWAPs
• Custom central bars and vwaps: color and pixels
• Highly configurable volume histogram: execution window, ticks, pixels, color, update frequency and fine tuning the neutral meaning
• Volume labels with custom size and color
• Tracking price dot to be able to see the current price when you hide your default candlesticks or bars
█ SETTINGS
Click here or set any impar period to see the HELP INFO : show the HELP INFO, if it is activated the indicator will not plot
PERIOD SIZE (max 2880 min) : waindrop size in minutes, default 60, max 2880 to allow the first half of a 48H period as a full session volume profile
BARS : show the central and vwap bars, default true
Central bars : show the central bars, default true
VWAP bars : show the left and right vwap bars, default true
Bars pixels : width of the bars in pixels, default 2
Bars color mode : bars color behavior
• BARS : gets the color from the 'Bars color' option on the settings panel
• HISTOGRAM : gets the color from the Bearish/Bullish/Neutral Histogram color options from the settings panel
Bars color : color for the central and vwap bars, default white
HISTOGRAM show the volume histogram, default true
Execution window (x24H) : last 24H periods where the volume funcionality will be plotted, default 5
Ticks per bar (max 50) : width in ticks of each histogram bar, default 2
Updates per period : number of times the histogram will update
• ONE : update at the last bar of the period
• TWO : update at the last bar of each half period
• FOUR : slice the period in 4 quarters and updates at the last bar of each of them
• EACH BAR : updates at the close of each bar
Pixels per bar : width in pixels of each histogram bar, default 4
Neutral Treshold (ticks) : delta in ticks between left and right vwaps to identify a waindrop as neutral, default 0
Bearish Histogram color : histogram color when right vwap is lower than left vwap, default red
Bullish Histogram color : histogram color when right vwap is higher than left vwap, default green
Neutral Histogram color : histogram color when the delta between right and left vwaps is equal or lower than the Neutral treshold, default blue
VOLUME LABELS : show volume labels
Volume labels color : color for the volume labels, default white
Volume Labels size : text size for the volume labels, choose between AUTO, TINY, SMALL, NORMAL or LARGE, default TINY
TRACK PRICE : show a yellow ball tracking the last price, default true
█ LIMITS
This indicator only works on intraday charts (minutes only) up to 12H (720m), the lower chart timeframe you can use is 1m
This indicator needs price, time and volume to work, it will not work on an index (there is no volume), the execution will not be allowed
The histogram (volume profile) can be plotted on 24H sessions as limit but you can plot several 24H sessions
█ ERRORS AND PERFORMANCE
Depending on the choosed settings, the script performance will be highly affected and it will experience errors
Two of the more common errors it can throw are:
• Calculation takes too long to execute
• Loop takes too long
The indicator performance is highly related to the underlying volatility (tick wise), the script takes each candlestick or bar and for each tick in it stores the price and volume, if the ticker in your chart has thousands and thousands of ticks per bar the indicator will throw an error for sure, it can not calculate in time such amount of ticks.
What all of that means? Simply put, this will throw error on the BITCOIN pair BTCUSD (high volatility with tick size 0.01) because it has too many ticks per bar, but lucky you it will work just fine on the futures contract BTC1! (tick size 5) because it has a lot less ticks per bar
There are some options you can fine tune to boost the script performance, the more demanding option in terms of resources consumption is Updates per period , by default is maxed out so lowering this setting will improve the performance in a high way.
If you wanna know more about how to improve the script performance, read the HELP INFO accessible from the settings panel
█ HOW-TO SETUP
The basic parameters to adjust are Period size , Ticks per bar and Pixels per bar
• Period size is the main setting, defines the waindrop size, to get a better looking histogram set bigger period and smaller chart timeframe
• Ticks per bar is the tricky one, adjust it differently for each underlying (ticker) volatility wise, for some you will need a low value, for others a high one.
To get a more accurate histogram set it as lower as you can (min value is 1)
• Pixels per bar allows you to adjust the width of each histogram bar, with it you can adjust the blank space between them or allow overlaping
You must play with these three parameters until you obtain the desired histogram: smoother, sharper, etc...
These are some of the different kind of charts you can setup thru the settings:
• Balanced Waindrops (default): charts with waindrops where the two halfs are of same size.
This is the default chart, just select a period (30m, 60m, 120m, 240m, pick your poison), adjust the histogram ticks and pixels and watch
• Unbalanced Waindrops: chart with waindrops where the two halfs are of different sizes.
Do you trade futures and want to plot a waindrop with the first half for the overnight session and the second half for the cash session? you got it;
just adjust the period to 1860 for any CME ticker (like ES1! for example) adjust the histogram ticks and pixels and watch
• Full Session Volume Profile: chart with waindrops where only the first half plots.
Do you use Volume profile to analize the market? Lucky you, now you can trick this one to plot it, just try a period of 780 on SPY, 2760 on ES1!, or 2880 on EURUSD
remember to adjust the histogram ticks and pixels for each underlying
• Only Bars: charts with only central and vwap bars plotted, simply deactivate the histogram and volume labels
• Only Histogram: charts with only the histogram plotted (volume profile charts), simply deactivate the bars and volume labels
• Only Volume: charts with only the raw volume numbers plotted, simply deactivate the bars and histogram
If you wanna know more about custom full session periods for different asset classes, read the HELP INFO accessible from the settings panel
EXAMPLES
Full Session Volume Profile on MES 5m chart:
Full Session Unbalanced Waindrop on MNQ 2m chart (left side Overnight session, right side Cash Session):
The following examples will have the exact same charts but on four different tickers representing a futures contract, a forex pair, an etf and a stock.
We are doing this to be able to see the different parameters we need for plotting the same kind of chart on different assets
The chart composition is as follows:
• Left side: Volume Labels chart (period 10)
• Upper Right side: Waindrops (period 60)
• Lower Right side: Full Session Volume Profile
The first example will specify the main parameters, the rest of the charts will have only the differences
MES :
• Left: Period size: 10, Bars: uncheck, Histogram: uncheck, Execution window: 1, Ticks per bar: 2, Updates per period: EACH BAR,
Pixels per bar: 4, Volume labels: check, Track price: check
• Upper Right: Period size: 60, Bars: check, Bars color mode: HISTOGRAM, Histogram: check, Execution window: 2, Ticks per bar: 2,
Updates per period: EACH BAR, Pixels per bar: 4, Volume labels: uncheck, Track price: check
• Lower Right: Period size: 2760, Bars: uncheck, Histogram: check, Execution window: 1, Ticks per bar: 1, Updates per period: EACH BAR,
Pixels per bar: 2, Volume labels: uncheck, Track price: check
EURUSD :
• Upper Right: Ticks per bar: 10
• Lower Right: Period size: 2880, Ticks per bar: 1, Pixels per bar: 1
SPY :
• Left: Ticks per bar: 3
• Upper Right: Ticks per bar: 5, Pixels per bar: 3
• Lower Right: Period size: 780, Ticks per bar: 2, Pixels per bar: 2
AAPL :
• Left: Ticks per bar: 2
• Upper Right: Ticks per bar: 6, Pixels per bar: 3
• Lower Right: Period size: 780, Ticks per bar: 1, Pixels per bar: 2
█ THANKS TO
PineCoders for all they do, all the tools and help they provide and their involvement in making a better community
scarf for the idea of coding a waindrops like indicator, I did not know something like that existed at all
All the Pine Coders, Pine Pros and Pine Wizards, people who share their work and knowledge for the sake of it and helping others, I'm very grateful indeed
I'm learning at each step of the way from you all, thanks for this awesome community;
Opensource and shared knowledge: this is the way! (said with canned voice from inside my helmet :D)
█ NOTE
This description was formatted following THIS guidelines
═════════════════════════════════════════════════════════════════════════
I sincerely hope you enjoy reading and using this work as much as I enjoyed developing it :D
GOOD LUCK AND HAPPY TRADING!
MTP AnalysisThe MTP Reversal Bars, MTP Swing Pivots and MTP ATR Stop are all included in the MTP Analysis Script.
The MTP Reversal Bars give the entry triggers for the MTPredictor Trade Setups. Blue for a potential Buy, Red for a potential Sell, and Grey for neutral. Please note, these are only to be used in conjunction with our MT Trade and MTP Advanced Trade Setup Scripts, and are only relevant at (or up to 5 bars after) a potential trade setup. They are calculated using a unique combination of reversal triggers.
The MTP Swing Pivots connect the swing highs and lows on your chart, giving you the Pivots off which to work for your MTPredictor Analysis, for example when using our MTP Decision Point (DP) Script. The Swing Pivots use the number of Bars either side of the pivots for its construction (not a % retracement), and as such are not a simple Zig-zag indicator.
The MTP ATR Stop is used to trail your protective Stop, once in a position, when the Market is “strong” (MTP Trend indicator is beyond the strength band) when the market reaches its projected Profit target. Please see the MTP Trend indicator Script for more information on this.
There is a risk in Trading and Investing. Losses can and will unfold.
The script is available as an “invite-only” script, as part of the MTPredictor suite of tools on Trading View.
To obtain access, please go to the web page in our signature that appears below.
TradeChartist Donchian Channels Breakout Filter™TradeChartist Donchian Channels Breakout Filter is an elegant version of the classic Donchian Channels with few extra variations and option to filter breakouts based on user preferred Breakout price selection to generate Trade Entries.
===================================================================================================================
Features of ™TradeChartist Donchian Channels Breakout Filter
======================================================
Option to plot Donchian Channels of user preferred length, based on the Source price in addition to High/Low Donchian Channels.
Generates trade entries based on user preferred Breakout Price. For example, if the user prefers HL2 as breakout price, irrespective of the Donchian Channels type, trade entries are generated only when hl2 price (average of high/low) breaks out of the upper or lower band.
Option to plot background colour based on Breakout trend. The bull zones are filled with green background, the Bear zones are filled with red background and the bar that broke out is filled with orange background.
Option to colour price bars using Donchian Channels price trend. The Donchian Channels basis line is plotted using the same colours as coloured bars as default.
Alerts can be created for long and short entries using Once per Bar Close .
Note: This script does not repaint . To use the script for trade entries, wait for the bar close and use a second confirmator (includes fundamentals) based on asset type as some markets require users to have good pulse on the fundamentals as trading by Technicals/price action dynamic alone may not be safe.
===================================================================================================================
Best Practice: Test with different settings first using Paper Trades before trading with real money
===================================================================================================================
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to test the indicator)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
===================================================================================================================
TradeChartist Visualizer ™TradeChartist Visualizer is a fully packed Trader's toolkit that helps decide Trade Entries and Exits based on Bollinger Bands and Donchian Channels breakouts and can be further exploited by the use of various visualizers and built in Filters like Ichimoku Cloud, 15 different Moving Averages, RSI, TradeChartist's original MA Visualizer and Automatic Levels Generator.
===================================================================================================================
Bollinger Bands is a classic indicator that uses a simple moving average of 20 periods, along with plots of upper and lower bands that are 2 standard deviations away from the basis line. These bands help visualize price volatility and trend based on where the price is, in relation to the bands.
Donchian Channels comprises of three plots - a upper band, a lower band and a mean line (or mid line of the channel). The upper band is based on highest high of N periods specified by the user and the lower band is based on the lowest low of N periods specified by the user. These channels help spot price breaching high or low of last N periods clearly, thereby aiding the trader to understand the price action of any security better on any given timeframe.
===================================================================================================================
╔═════ 𝗕𝗕 & 𝗗𝗼𝗻𝗰𝗵𝗶𝗮𝗻 𝗖𝗵𝗮𝗻𝗻𝗲𝗹𝘀 ═════╗
™TradeChartist Visualizer is based on the idea of Bollinger Bands and Donchian Channels Breakout model for generating Trade Entries. Visualizer uses the following three fundamental plot options from the settings that the user can choose from, to spot breakouts, support/resistance levels and the trading price range of the security.
1. Bollinger Bands
The 𝟏. 𝐁𝐨𝐥𝐥𝐢𝐧𝐠𝐞𝐫 𝐁𝐚𝐧𝐝𝐬 option plots the Bollinger Bands for the chart timeframe (default is 55 SMA with 1 standard Deviation). This can be changed by entering different values in BB Sᴛᴀɴᴅᴀʀᴅ Dᴇᴠɪᴀᴛɪᴏɴ and MA Lᴇɴɢᴛʜ ғᴏʀ BB/Dᴏɴᴄʜɪᴀɴ Cʜᴀɴɴᴇʟs .
To use a different Moving Average for the Bollinger Bands Basis line, uncheck 𝐒𝐌𝐀 𝐁𝐁 𝐨𝐧𝐥𝐲 - 𝐔𝐧𝐜𝐡𝐞𝐜𝐤 𝐟𝐨𝐫 𝐧𝐨𝐧-𝐒𝐌𝐀 𝐁𝐁
The option is enabled as default as it keeps the SMA as standard. Unchecking this option and choosing a different moving average out of the 15 MAs in the dropdown, the plot changes significantly for each. Also a warning label will appear on screen if Standard Deviation more than 1 is used for non standard MA for Bollinger Bands, as the settings must be tested for non-standard Bollinger Bands before planning to trade with it.
2. True Donchian Channels
The 𝟐. 𝐓𝐫𝐮𝐞 𝐃𝐨𝐧𝐜𝐡𝐢𝐚𝐧 𝐂𝐡𝐚𝐧𝐧𝐞𝐥𝐬 option plots Donchian Channels by inspecting the lookback lengths for highest highs and lowest lows of the user specified periods, which can be changed in Uᴘᴘᴇʀ Dᴏɴᴄʜɪᴀɴ Cʜᴀɴɴᴇʟ Lᴇɴɢᴛʜ and Lᴏᴡᴇʀ Dᴏɴᴄʜɪᴀɴ Cʜᴀɴɴᴇʟ Lᴇɴɢᴛʜ user input boxes from Visualizer settings.
3. Donchian Channels - MA and Non-MA Source
The 𝟑. 𝐃𝐨𝐧𝐜𝐡𝐢𝐚𝐧 𝐂𝐡𝐚𝐧𝐧𝐞𝐥𝐬 - 𝐌𝐀/𝐍𝐨𝐧-𝐌𝐀 𝐒𝐨𝐮𝐫𝐜𝐞 option plots modified Donchian Channels based on highest high and lowest low of Moving Average or the Source using user specified periods, which can be changed in Uᴘᴘᴇʀ Dᴏɴᴄʜɪᴀɴ Cʜᴀɴɴᴇʟ Lᴇɴɢᴛʜ , Lᴏᴡᴇʀ Dᴏɴᴄʜɪᴀɴ Cʜᴀɴɴᴇʟ Lᴇɴɢᴛʜ , MA Lᴇɴɢᴛʜ ғᴏʀ BB/Dᴏɴᴄʜɪᴀɴ Cʜᴀɴɴᴇʟs choosing the source plot from Sᴏᴜʀᴄᴇ and MA Type from MA ᴛʏᴘᴇ - (ғᴏʀ ᴘʟᴏᴛs 1 & 3) . For Donchian Channels plot of Non-MA Source, choose Use Source from MA ᴛʏᴘᴇ - (ғᴏʀ ᴘʟᴏᴛs 1 & 3) dropdown.
===================================================================================================================
╔═════════ 𝗠𝗔 𝗩𝗶𝘀𝘂𝗮𝗹𝗶𝘇𝗲𝗿 ═════════╗
MA Visualizer is a powerful and very useful original visual method to plot Moving Averages of the close price of the security for user specified look back period in a visually appealing style in the form of colour coded bands. MA Visualizer not only helps the trader spot the price action of the security relative to the moving average, but also paints a visual picture of the trend strength, which must be seen and used on chart to appreciate its elegance.
Activate 𝗠𝗔 𝗩𝗶𝘀𝘂𝗮𝗹𝗶𝘇𝗲𝗿 and choose the MA type from MA Vɪsᴜᴀʟɪᴢᴇʀ Tʏᴘᴇ dropdown and entering the lookback period in MA Vɪsᴜᴀʟɪᴢᴇʀ ᴘᴇʀɪᴏᴅ input box. MA Visualizer colour theme can be be changed from MA Vɪsᴜᴀʟɪᴢᴇʀ Cᴏʟᴏʀ Sᴄʜᴇᴍᴇ dropdown.
The faster of the two set of bands that form the MA Visualizer reacts to price action faster and can be clearly seen from its change of colour from Bull Colour to Bear Colour or viceversa earlier than the slower set of bands. The fill colour between the bands also helps the user stay in a trade or exit a trade based on other confirmators or filters included in ™TradeChartist Visualizer .
===================================================================================================================
╔═══════ 𝗦𝗶𝗴𝗻𝗮𝗹𝘀 𝗮𝗻𝗱 𝗙𝗶𝗹𝘁𝗲𝗿𝘀 ═══════╗
𝗦𝗶𝗴𝗻𝗮𝗹𝘀
Trade Signals can be enabled along with use of various filters from this heading in Visualizer settings. To plot Trade entry markers on chart when a trade signal is generated, enable 𝐁𝐁/𝐃𝐨𝐧𝐜𝐡𝐢𝐚𝐧 𝐂𝐡𝐚𝐧𝐧𝐞𝐥𝐬 𝐁𝐫𝐞𝐚𝐤𝐨𝐮𝐭 𝐒𝐢𝐠𝐧𝐚𝐥𝐬.
The script automatically detects the breakouts based on user specified settings under 𝗕𝗕 & 𝗗𝗼𝗻𝗰𝗵𝗶𝗮𝗻 𝗖𝗵𝗮𝗻𝗻𝗲𝗹𝘀. Trade Entries are plotted on the real-time breakout candle, so it is recommended to wait for bar close before taking a position in the direction of the breakout.
𝗙𝗶𝗹𝘁𝗲𝗿𝘀
Various Filters can be used from this heading to reduce noise and help make the trade decision more effective and eliminates unproductive trades when the price is ranging or during sideways movement.
To use Filters, enable 𝐔𝐬𝐞 𝐓𝐫𝐚𝐝𝐞 𝐅𝐢𝐥𝐭𝐞𝐫 and choose the Filters from under Tʀᴀᴅᴇ Fɪʟᴛᴇʀ 1 and Tʀᴀᴅᴇ Fɪʟᴛᴇʀ 2 . If --- is chosen, no filter will be used. Trade filter parameters can be changed from under 𝗙𝗶𝗹𝘁𝗲𝗿 𝗣𝗮𝗿𝗮𝗺𝗲𝘁𝗲𝗿𝘀 section of Visualizer settings. The two trade filter dropdowns enable traders to use upto 2 filters from the following.
══> MA filter - This filters entries after a breakout only if the close price had breached the MA price. Filter MA is based on the same settings as MA Visualizer. This MA used for Filter can also be plotted by enabling 𝐃𝐢𝐬𝐩𝐥𝐚𝐲 𝐌𝐀 𝐅𝐢𝐥𝐭𝐞𝐫 (𝐌𝐀 𝐕𝐢𝐬𝐮𝐚𝐥𝐢𝐳𝐞𝐫 𝐒𝐞𝐭𝐭𝐢𝐧𝐠𝐬). To view this MA plot clearly, disable MA Visualizer.
══> MA Visualizer filter - This filters entries after a breakout only if both set of MA Visualizer bands had turned into same colour (either Bull or Bear Colour) agreeing with the direction of the breakout.
══> RSI filter - This filters entries after a breakout only if the RSI had crossed above RSI - Lᴏɴɢ Eɴᴛʀʏ Fɪʟᴛᴇʀ for Longs or if RSI had crossed below RSI - Sʜᴏʀᴛ Eɴᴛʀʏ Fɪʟᴛᴇʀ .
══> Kumo Breakout filter - This filters entries after a breakout only if price had closed above or below the Kumo of the Ichimoku Cloud in the direction of the breakout.
══> Price crossing Kijun Sen - This filters entries after a breakout only if close price had crossed Kijun Sen or the Ichimoku Base Line in the direction of the breakout.
To visualize the Kumo Breakout or Price crossing Kijun Sen, Ichimoku Cloud can be plotted on chart by enabling 𝐃𝐢𝐬𝐩𝐥𝐚𝐲 𝐈𝐜𝐡𝐢𝐦𝐨𝐤𝐮 𝐂𝐥𝐨𝐮𝐝 from 𝗙𝗶𝗹𝘁𝗲𝗿 𝗣𝗮𝗿𝗮𝗺𝗲𝘁𝗲𝗿𝘀 section of Visualizer settings.
===================================================================================================================
╔═══ 𝗔𝘂𝘁𝗼𝗺𝗮𝘁𝗶𝗰 𝗟𝗲𝘃𝗲𝗹𝘀 𝗚𝗲𝗻𝗲𝗿𝗮𝘁𝗼𝗿 ════╗
Enabling 𝗔𝘂𝘁𝗼𝗺𝗮𝘁𝗶𝗰 𝗟𝗲𝘃𝗲𝗹𝘀 𝗚𝗲𝗻𝗲𝗿𝗮𝘁𝗼𝗿 plots support and resistance levels automatically without any input from the user other than preferred levels plot from the indicator settings namely,
Plot Local Levels for Lower TF - Plots all important Support/Resistance levels for mostly smaller time frames (can be used for up to 1hr in most cases). Recommended for Scalping/Swing Trading mostly dependent on volatility.
Plot Local Levels for Higher TF - Plots all important Support/Resistance levels inferred from mostly time frames - Short to Mid term outlook.
Use Trading View Data Window to make effective use of the levels.
===================================================================================================================
╔═════════ 𝗨𝘀𝗲𝗳𝘂𝗹 𝗘𝘅𝘁𝗿𝗮𝘀 ═════════╗
Volatility exhaustion is detected by the script and plots $ on bar highs for Long Trades and bar lows for Short Trades if Tᴀᴋᴇ Pʀᴏғɪᴛ Bᴀʀs is enabled.
Candles/Bars can be colored with Price action trend strength by enabling Vɪsᴜᴀʟɪᴢᴇʀ Cᴏʟᴏʀ Bᴀʀs and by choosing one of two themes from Bᴀʀ Cᴏʟᴏʀ Sᴄʜᴇᴍᴇ . Bar colors can also be inverted using Iɴᴠᴇʀᴛ Bᴀʀ Cᴏʟᴏʀs option.
To paint the background of the chart to spot trade zones, enable Tʀᴀᴅᴇ Zᴏɴᴇs Bᴀᴄᴋɢʀᴏᴜɴᴅ Fɪʟʟ .
Alerts
Alerts can be created for Long and Short entries by using Once Per Bar Close as Alert Frequency. Entries are generated on Real time bars based on Breakout and filter conditions. It is recommended to wait for bar close before taking a position based on Visualizer Trade Entries.
The indicator does not repaint and can be confidently used for alerts and trade entries without worrying about signals disappearing.
™TradeChartist Visualizer can also be connected to ™TradeChartist Plug and Trade to generate entries along with Targets, Stop Loss plots etc. Target and Stop Loss alerts can be created using Plug and Trade's Alerts system.
===================================================================================================================
There are several combinations of settings that can be tested on the security traded based on timeframe and risk/reward expectations. The indicator can be used for trade entries with filter combinations or can be used as standalone Visualizer for trend confirmations, levels etc. Following are a few examples using the Visualizer.
Example Charts
1. ETH-USDT 1hr chart using Bollinger Bands (55/1, SMA) with 89 period Hull MA as MA Visualizer filter for BB Entries.
2. AAPL 1hr chart using 34 period Donchian Channels with 89 period Zero-Lag EMA as MA Visualizer filter for Entries.
3.EUR-USD 1hr chart using 34 period Donchian Channels with 89 period TEMA as MA Visualizer Filter for Entries.
4. XBT Daily chart using 9/21 Donchian Channels with Kumo Breakout Filter and 34 period Hull MA Visualizer Filter for Entries connected to Plug and Trade.
5. LINK-USDT 1hr chart using 34 period Donchian Channels with 55 period LSMA MA Visualizer Filter for Entries with Ichimoku Cloud Plot.
===================================================================================================================
Best Practice: Test with different settings first using Paper Trades before trading with real money
===================================================================================================================
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to test the indicator)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
===================================================================================================================
TradeChartist TrendRider ™TradeChartist TrendRider is an exceptionally beautiful and a functional indicator that does exactly what it says on the tin. The indicator rides the trend based on Momentum, Volatility, detecting critical zones of Support and Resistance along the way, which helps the indicator find the right trend to ride, plotting Trend Markers and Trade Signals based on only one piece of User input - TrendRider Type (Aggressive, Normal or Laid Back).
===================================================================================================================
What does ™TradeChartist TrendRider do?
™TradeChartist TrendRider dynamically calculates Support and Resistance levels when riding a trend and uses these levels for confirmation on breach or fail (on a candle close), before reversing from the current trend it is riding. The change of trend is signalled using Bᴜʟʟs or Bᴇᴀʀs labels which are plotted upon confirmation of the Trend.
TrendRider plots Bull and Bear Trend Markers on chart, which helps the user get a visual confirmation of the Trend.
TrendRider also plots $ signs to show Take Profit Bars and also paints Trend strength on price bars based on the Color Scheme, if these options are enabled from the indicator settings.
The above features can be clearly seen on the 1 hr chart of GBP-USD below.
===================================================================================================================
How to create Alerts for ™TradeChartist TrendRider Long and Short Entries?
Alerts can be created for Long or Short entries using Once Per Bar as Bᴜʟʟs or Bᴇᴀʀs labels appear only on confirmation after bar close.
===================================================================================================================
Does the indicator include Stop Loss and Take Profit plots?
This script doesn't have Stop Loss and Take Profit plots, but it can be connected to ™TradeChartist Plug and Trade as Oscillatory signal (" TrendRider Signal ") to generate Automatic Targets, set StopLoss and Take Profit plots and to create all types of alerts too. The 4hr chart of ICX-BTC below shows TrendRider connected to ™TradeChartist Plug and Trade.
===================================================================================================================
Does this indicator repaint?
No. This script doesn't repaint as it confirms its signals only after close above/below TrendRider's dynamic level and also uses security function to call higher time-frame values in the right way to avoid repainting. This can be verified using Bar Replay to check if the plots and fills stay in the same bar in real time as the Bar Replay.
===================================================================================================================
Example charts using TrendRider
Daily chart of BTC-USD
===================================================================================================================
15m chart of SPX
===================================================================================================================
1hr chart of ADA-USDT
===================================================================================================================
15m chart of XAU-USD
===================================================================================================================
4hr chart of Dow Jones Industrial Average
===================================================================================================================
Best Practice: Test with different settings first using Paper Trades before trading with real money
===================================================================================================================
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to test the indicator)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
===================================================================================================================
TradeChartist Chameleon™TradeChartist Chameleon is an exceptionally beautiful trend following indicator (visualised using Chameleon plot) based on Momentum and Volatility using User input of Chameleon Mode and Risk factor (ATR multiple) to generate Trade Opportunities.
===================================================================================================================
™TradeChartist Chameleon Features
Minimal user input of Chameleon Mode Selection from (Aggressive, Normal and Laid Back) and Chameleon Risk Factor (Min - 1, Max - 5 of ATR Multiple).
---> For Higher Timeframes, lower Risk Factor is recommended (Max - 3) as the trading range can be high based on Volatility.
---> For Lower Timeframes, higher Risk Factor can be used (Normal or Laid Back Mode) based on asset price volatility.
Comprehensive Chameleon Dashboard with useful information like Real-time Gains Tracker , User settings and general trade information. Dashboard can be customised based on user preference from Chameleon Settings.
Automatic Targets based on Trade.
Option to paint Price Bars to help identify Price Trend.
Option to display Profit Taking Bars (enabling this from settings will paint $ signs where Profit taking is recommended).
Option to color background based on trade type.
Alerts can be created for Long and Short Entry Signals using "Once per Bar" as Trade Entries are generated only upon confirmation (previous candle close below/above Chameleon Trigger line).
===================================================================================================================
How to create Alerts for ™TradeChartist Chameleon Long and Short Entries?
Alerts can be created for Long or Short entries using Once Per Bar as BUY and SELL labels appear with entries only on confirmation after bar close.
Does the indicator include Stop Loss and Take Profit plots?
This script doesn't have Stop Loss and Take Profit plots, but it can be connected to ™TradeChartist Plug and Trade as Oscillatory signal (" Chameleon ") to set StopLoss and Take Profit plots and to create all types of alerts too.
Does this indicator repaint?
No. This script doesn't repaint as it confirms its signals only after close above/below Chameleon Trigger line and also uses security function to call higher time-frame values in the right way to avoid repainting. This can be verified using Bar Replay to check if the plots and fills stay in the same bar in real time as the Bar Replay.
===================================================================================================================
Best Practice: Test with different settings first using Paper Trades before trading with real money
===================================================================================================================
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to test the indicator)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
===================================================================================================================






















